package de.wesemann.jdedun.entities;

public class AbstractEntity {

    /**
     * Eine eindeutige id. Dient der zuverlässigen identifizierung
     */
    private int id;
    /**
     * Zeigt an wann der Datensatz angelegt wurde (ändert sich automatisch!)
     */
    private String created_at;

    /**
     * Zeigt an wann der Datensatz das letzte Mal geändert wurde (ändert sich
     * automatisch!)
     */
    private String updated_at;

    /**
     * Eine eindeutige id. Dient der zuverlässigen identifizierung
     * 
     * @return the id
     */
    public int getId() {
	return id;
    }

    /**
     * Eine eindeutige id. Dient der zuverlässigen identifizierung
     * 
     * @param id
     *            the id to set
     */
    public void setId(int id) {
	this.id = id;
    }

    /**
     * Zeigt an wann der Datensatz angelegt wurde (ändert sich automatisch!)
     * 
     * @return the created_at
     */
    public String getCreated_at() {
	return created_at;
    }

    /**
     * Zeigt an wann der Datensatz angelegt wurde (ändert sich automatisch!)
     * 
     * @param created_at
     *            the created_at to set
     */
    public void setCreated_at(String created_at) {
	this.created_at = created_at;
    }

    /**
     * Zeigt an wann der Datensatz das letzte Mal geändert wurde (ändert sich
     * automatisch!)
     * 
     * @return the updated_at
     */
    public String getUpdated_at() {
	return updated_at;
    }

    /**
     * Zeigt an wann der Datensatz das letzte Mal geändert wurde (ändert sich
     * automatisch!)
     * 
     * @param updated_at
     *            the updated_at to set
     */
    public void setUpdated_at(String updated_at) {
	this.updated_at = updated_at;
    }

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result
		+ ((created_at == null) ? 0 : created_at.hashCode());
	result = prime * result + id;
	result = prime * result
		+ ((updated_at == null) ? 0 : updated_at.hashCode());
	return result;
    }

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
	if (this == obj) {
	    return true;
	}
	if (obj == null) {
	    return false;
	}
	if (getClass() != obj.getClass()) {
	    return false;
	}
	AbstractEntity other = (AbstractEntity) obj;
	if (created_at == null) {
	    if (other.created_at != null) {
		return false;
	    }
	} else if (!created_at.equals(other.created_at)) {
	    return false;
	}
	if (id != other.id) {
	    return false;
	}
	if (updated_at == null) {
	    if (other.updated_at != null) {
		return false;
	    }
	} else if (!updated_at.equals(other.updated_at)) {
	    return false;
	}
	return true;
    }

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
	return "AbstractEntity [id=" + id + ", created_at=" + created_at
		+ ", updated_at=" + updated_at + "]";
    }
}
